//次js是混入到各设计组件的公共js，
export default {
    props: {
        dataVal: { type: Object, required: true },
        scoreIs: { type: Boolean, default: false },
        index: Number,
        tool: Object
    },
    methods: {
        /**这通常是用来修改问卷标签的标题的，因为标题是使用非表单控件，导致无法双向绑定，这里便是用来双向绑定的，e是控件，data是绑定数据的父级，datakey是属性名称 */
        dataChange(e, data, dataKey) {
            const newValue = e.target.innerText;
            data[dataKey] = newValue;
        },
        /**分数处理 */
        doneScore(e, i) {
            i.attribute = i.attribute ?? {};
            i.attribute.score = e.target.innerText.replace(/(^0|\D)/g, "");
            // 只保留数字，虽然内容来自e，并绑定了i.attribute.score，但还是要重新赋值
            // 这样才能在输入时，实时更新到i.attribute.score,且输入的内容长度不超过2个字符
            if (i.attribute.score.length > 2) {
                i.attribute.score = i.attribute.score.slice(0, 2);
            }
            e.target.innerText = i.attribute.score || "0";
        },
        /**提示，会将异常通知到父级 */
        tip(data) {
            this.$emit('tip', data);
        },
        /**可编辑的HTML标签上，禁止回车换行的功能 */
        preventEnter(event) {
            if (event.key === "Enter") {
                event.preventDefault();
            }
        },
    },
    computed: {
        isRequired: {
            get() {
                return this.dataVal?.attribute?.required ?? false; // 如果是 undefined，则默认为 false
            },
            set(value) {
                if (!this.dataVal) this.dataVal = {};
                if (!this.dataVal.attribute) this.dataVal.attribute = {};
                this.dataVal.attribute.required = value;
            }
        }
    }
};